#include <stdio.h>

int main()
{
    //指针：是一个变量 数据类型 *
    //NULL：空指针
    int *p = NULL;  //定义了一个int类型的指针，既然是变量，那么也要初始化，初始化为空指针（int*是类型，p是变量名）
    printf("%ld\n", sizeof(int *)); //指针的大小和指针的数据类型没有关系，和系统的位数有关（64位系统：8个字节 32位系统：4个字节）


    int a = 10;
    p = &a; //指针变量的内存存的是地址

    p = 20;     //把指针p里存的地址修改为20，那么指针p也就不指向a了，又因为20这块地址不存在，所以会发生段错误（野指针：指向非法内存的指针）
    *p = 20;    //修改指针p里存的地址所指向的那块内存的值    
    printf("%d\n", *p); //取指针变量中 地址所在内存 的值（内存的最小单位是字节，所以地址数值多一就相差一个字节）
    
    return 0;
}